import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  // 存储所有共享数据
  state: {
    count: 0
  },
  // 用于变更 Store 中的数据
  mutations: {
    // 变更状态
    // 添加1
    add(state) {
      state.count++
    },
    // 添加n
    addN(state, step) {
      state.count += step
    },
    // 减少1
    sub(state) {
      state.count--
    },
    // 减少n
    subN(state, step) {
      state.count -= step
    }
  },
  // 用于异步操作
  actions: {
    // 延时1秒 执行 add 添加操作
    addAsync(context) {
      setTimeout(() => {
        context.commit('add')
      }, 1000)
    },
    // 延时1秒 执行 addN 添加操作(参数)
    addNAsync(context, step) {
      setTimeout(() => {
        context.commit('addN', step)
      }, 1000)
    },
    // 延时1秒 执行 sub 减少操作
    subAsync(context) {
      setTimeout(() => {
        context.commit('sub')
      }, 1000)
    },
    // 延时1秒 执行 subN 减少操作(参数)
    subNAsync(context, step) {
      setTimeout(() => {
        context.commit('subN', step)
      }, 1000)
    }
  },
  // 用于处理数据
  getters: {
    showNum: state => {
      return '当前最新的数量是【' + state.count + '】'
    }
  },
  modules: {}
})
